home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 April: Mac OS SDK / Dev.CD Apr 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Interfaces / AIncludes / FSM.a < prev    next >
Encoding:
Text File  |  1996-01-24  |  35.5 KB  |  1,220 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        FSM.a
  3. ;
  4. ;    Contains:    HFS External File System Interfaces.
  5. ;
  6. ;    Version:    Technology:    System 7.5
  7. ;                Package:    Universal Interfaces 2.2 in “MPW” on ETO #20
  8. ;
  9. ;    Copyright:    © 1984-1995 by Apple Computer, Inc.
  10. ;                All rights reserved.
  11. ;
  12. ;    Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13. ;                stack.  Include the file and version information (from above)
  14. ;                in the problem description and send to:
  15. ;                    Internet:    apple.bugs@applelink.apple.com
  16. ;                    AppleLink:    APPLE.BUGS
  17. ;
  18. ;
  19.  
  20.     IF &TYPE('__FSM__') = 'UNDEFINED' THEN
  21. __FSM__ SET 1
  22.  
  23.  
  24.     IF &TYPE('__FILES__') = 'UNDEFINED' THEN
  25.     include 'Files.a'
  26.     ENDIF
  27. ;        include 'Types.a'                                            ;
  28. ;            include 'ConditionalMacros.a'                            ;
  29. ;        include 'MixedMode.a'                                        ;
  30. ;        include 'OSUtils.a'                                        ;
  31. ;            include 'Memory.a'                                        ;
  32. ;        include 'Finder.a'                                            ;
  33.     IF OLDROUTINELOCATIONS  THEN
  34.  
  35. volMountInteractBit                EQU        15                    ; Input to VolumeMount: If set, it's OK for the file system 
  36. volMountInteractMask            EQU        $8000                ; to perform user interaction to mount the volume 
  37. volMountChangedBit                EQU        14                    ; Output from VoumeMount: If set, the volume was mounted, but 
  38. volMountChangedMask                EQU        $4000                ; the volume mounting information record needs to be updated. 
  39. volMountFSReservedMask            EQU        $00ff                ; bits 0-7 are defined by each file system for its own use 
  40. volMountSysReservedMask            EQU        $ff00                ; bits 8-15 are reserved for Apple system use 
  41.  
  42. ;
  43. ; * additional volume mount info record
  44. VolumeMountInfoHeader     RECORD    0
  45. length                     ds.w   1        ; offset: $0 (0)        ; length of location data (including self) 
  46. media                     ds.l   1        ; offset: $2 (2)        ; type of media (must be registered with Apple) 
  47. flags                     ds.w   1        ; offset: $6 (6)        ; volume mount flags. Variable length data follows 
  48. sizeof                     EQU *            ; size:   $8 (8)
  49.                         ENDR
  50.  
  51. ; typedef struct VolumeMountInfoHeader  VolumeMountInfoHeader
  52. ; typedef VolumeMountInfoHeader  *VolumeMountInfoHeaderPtr
  53.  
  54. gestaltFSMVersion                EQU        'fsm '
  55.  
  56. ; typedef VCB                 *VCBPtr
  57.     ENDIF
  58.  
  59. fsUsrCNID                        EQU        16                    ; First assignable directory or file number 
  60. ;    File system trap word attribute bits 
  61. kHFSBit                            EQU        9                    ; HFS call: bit 9 
  62. kHFSMask                        EQU        $0200
  63. kAsyncBit                        EQU        10                    ; Asynchronous call: bit 10 
  64. kAsyncMask                        EQU        $0400
  65.  
  66. ;
  67. ; * HFSCIProc selectCode values
  68. ; * Note: The trap attribute bits (the HFS bit and the asynchronous bit)
  69. ; * may be set in these selectCode values.
  70. kFSMOpen                        EQU        $A000
  71. kFSMClose                        EQU        $A001
  72. kFSMRead                        EQU        $A002
  73. kFSMWrite                        EQU        $A003
  74. kFSMGetVolInfo                    EQU        $A007
  75. kFSMCreate                        EQU        $A008
  76. kFSMDelete                        EQU        $A009
  77. kFSMOpenRF                        EQU        $A00A
  78. kFSMRename                        EQU        $A00B
  79. kFSMGetFileInfo                    EQU        $A00C
  80. kFSMSetFileInfo                    EQU        $A00D
  81. kFSMUnmountVol                    EQU        $A00E
  82. kFSMMountVol                    EQU        $A00F
  83. kFSMAllocate                    EQU        $A010
  84. kFSMGetEOF                        EQU        $A011
  85. kFSMSetEOF                        EQU        $A012
  86. kFSMFlushVol                    EQU        $A013
  87. kFSMGetVol                        EQU        $A014
  88. kFSMSetVol                        EQU        $A015
  89. kFSMEject                        EQU        $A017
  90. kFSMGetFPos                        EQU        $A018
  91. kFSMOffline                        EQU        $A035
  92. kFSMSetFilLock                    EQU        $A041
  93. kFSMRstFilLock                    EQU        $A042
  94. kFSMSetFilType                    EQU        $A043
  95. kFSMSetFPos                        EQU        $A044
  96. kFSMFlushFile                    EQU        $A045
  97. ;    The File System HFSDispatch selectCodes 
  98. kFSMOpenWD                        EQU        $0001
  99. kFSMCloseWD                        EQU        $0002
  100. kFSMCatMove                        EQU        $0005
  101. kFSMDirCreate                    EQU        $0006
  102. kFSMGetWDInfo                    EQU        $0007
  103. kFSMGetFCBInfo                    EQU        $0008
  104. kFSMGetCatInfo                    EQU        $0009
  105. kFSMSetCatInfo                    EQU        $000A
  106. kFSMSetVolInfo                    EQU        $000B
  107. kFSMLockRng                        EQU        $0010
  108. kFSMUnlockRng                    EQU        $0011
  109. kFSMCreateFileIDRef                EQU        $0014
  110. kFSMDeleteFileIDRef                EQU        $0015
  111. kFSMResolveFileIDRef            EQU        $0016
  112. kFSMExchangeFiles                EQU        $0017
  113. kFSMCatSearch                    EQU        $0018
  114. kFSMOpenDF                        EQU        $001A
  115. kFSMMakeFSSpec                    EQU        $001B
  116. ;    The Desktop Manager HFSDispatch selectCodes 
  117. kFSMDTGetPath                    EQU        $0020
  118. kFSMDTCloseDown                    EQU        $0021
  119. kFSMDTAddIcon                    EQU        $0022
  120. kFSMDTGetIcon                    EQU        $0023
  121. kFSMDTGetIconInfo                EQU        $0024
  122. kFSMDTAddAPPL                    EQU        $0025
  123. kFSMDTRemoveAPPL                EQU        $0026
  124. kFSMDTGetAPPL                    EQU        $0027
  125. kFSMDTSetComment                EQU        $0028
  126. kFSMDTRemoveComment                EQU        $0029
  127. kFSMDTGetComment                EQU        $002A
  128. kFSMDTFlush                        EQU        $002B
  129. kFSMDTReset                        EQU        $002C
  130. kFSMDTGetInfo                    EQU        $002D
  131. kFSMDTOpenInform                EQU        $002E
  132. kFSMDTDelete                    EQU        $002F
  133. ;    The AppleShare HFSDispatch selectCodes 
  134. kFSMGetVolParms                    EQU        $0030
  135. kFSMGetLogInInfo                EQU        $0031
  136. kFSMGetDirAccess                EQU        $0032
  137. kFSMSetDirAccess                EQU        $0033
  138. kFSMMapID                        EQU        $0034
  139. kFSMMapName                        EQU        $0035
  140. kFSMCopyFile                    EQU        $0036
  141. kFSMMoveRename                    EQU        $0037
  142. kFSMOpenDeny                    EQU        $0038
  143. kFSMOpenRFDeny                    EQU        $0039
  144. kFSMGetXCatInfo                    EQU        $003A
  145. kFSMGetVolMountInfoSize            EQU        $003F
  146. kFSMGetVolMountInfo                EQU        $0040
  147. kFSMVolumeMount                    EQU        $0041
  148. kFSMShare                        EQU        $0042
  149. kFSMUnShare                        EQU        $0043
  150. kFSMGetUGEntry                    EQU        $0044
  151. kFSMGetForeignPrivs                EQU        $0060
  152. kFSMSetForeignPrivs                EQU        $0061
  153.  
  154. ;
  155. ; * UTDetermineVol status values
  156. dtmvError                        EQU        0                    ; param error 
  157. dtmvFullPathame                    EQU        1                    ; determined by full pathname 
  158. dtmvVRefNum                        EQU        2                    ; determined by volume refNum 
  159. dtmvWDRefNum                    EQU        3                    ; determined by working directory refNum 
  160. dtmvDriveNum                    EQU        4                    ; determined by drive number 
  161. dtmvDefault                        EQU        5                    ; determined by default volume 
  162.  
  163. ;
  164. ; * UTGetBlock options
  165. gbDefault                        EQU        0                    ; default value - read if not found 
  166. ;    bits and masks 
  167. gbReadBit                        EQU        0                    ; read block from disk (forced read) 
  168. gbReadMask                        EQU        $0001
  169. gbExistBit                        EQU        1                    ; get existing cache block 
  170. gbExistMask                        EQU        $0002
  171. gbNoReadBit                        EQU        2                    ; don't read block from disk if not found in cache 
  172. gbNoReadMask                    EQU        $0004
  173. gbReleaseBit                    EQU        3                    ; release block immediately after GetBlock 
  174. gbReleaseMask                    EQU        $0008
  175.  
  176. ;
  177. ; * UTReleaseBlock options
  178. rbDefault                        EQU        0                    ; default value - just mark the buffer not in-use 
  179. ;    bits and masks 
  180. rbWriteBit                        EQU        0                    ; force write buffer to disk 
  181. rbWriteMask                        EQU        $0001
  182. rbTrashBit                        EQU        1                    ; trash buffer contents after release 
  183. rbTrashMask                        EQU        $0002
  184. rbDirtyBit                        EQU        2                    ; mark buffer dirty 
  185. rbDirtyMask                        EQU        $0004
  186. rbFreeBit                        EQU        3                    ; free the buffer (save in the hash) 
  187. ;
  188. ; *    rbFreeMask (rbFreeBit + rbTrashBit) works as rbTrash on < System 7.0 RamCache;
  189. ; *    on >= System 7.0, rbfreeMask overrides rbTrash
  190. rbFreeMask                        EQU        $000A
  191.  
  192. ;
  193. ; * UTFlushCache options
  194. fcDefault                        EQU        0                    ; default value - just flush any dirty buffers 
  195. ;    bits and masks 
  196. fcTrashBit                        EQU        1                    ; trash buffers after flushing 
  197. fcTrashMask                        EQU        $0002
  198. fcFreeBit                        EQU        3                    ; free buffers after flushing 
  199. fcFreeMask                        EQU        $0008                ; fcFreeMask works as fcTrash on < System 7.0 RamCache 
  200.  
  201. ;
  202. ; * UTCacheReadIP and UTCacheWriteIP cacheOption
  203. noCacheBit                        EQU        5                    ; don't cache this please 
  204. noCacheMask                        EQU        $0020
  205. rdVerifyBit                        EQU        6                    ; read verify 
  206. rdVerifyMask                    EQU        $0040
  207.  
  208. ;
  209. ; * Cache routine internal error codes
  210. chNoBuf                            EQU        1                    ; no free cache buffers (all in use) 
  211. chInUse                            EQU        2                    ; requested block in use 
  212. chnotfound                        EQU        3                    ; requested block not found 
  213. chNotInUse                        EQU        4                    ; block being released was not in use 
  214.  
  215. ;
  216. ; * FCBRec.fcbFlags bits
  217. fcbWriteBit                        EQU        0                    ; Data can be written to this file 
  218. fcbWriteMask                    EQU        $01
  219. fcbResourceBit                    EQU        1                    ; This file is a resource fork 
  220. fcbResourceMask                    EQU        $02
  221. fcbWriteLockedBit                EQU        2                    ; File has a locked byte range 
  222. fcbWriteLockedMask                EQU        $04
  223. fcbSharedWriteBit                EQU        4                    ; File is open for shared write access 
  224. fcbSharedWriteMask                EQU        $10
  225. fcbFileLockedBit                EQU        5                    ; File is locked (write-protected) 
  226. fcbFileLockedMask                EQU        $20
  227. fcbOwnClumpBit                    EQU        6                    ; File has clump size specified in FCB 
  228. fcbOwnClumpMask                    EQU        $40
  229. fcbModifiedBit                    EQU        7                    ; File has changed since it was last flushed 
  230. fcbModifiedMask                    EQU        $80
  231.  
  232. ;
  233. ; * ExtFileProc options
  234. extendFileAllBit                EQU        0                    ; allocate all requested bytes or none 
  235. extendFileAllMask                EQU        $0001
  236. extendFileContigBit                EQU        1                    ; force contiguous allocation 
  237. extendFileContigMask            EQU        $0002
  238.  
  239. ;
  240. ; *    HFS Component Interface constants
  241. ;
  242. ; * compInterfMask bits specific to HFS component
  243. hfsCIDoesHFSBit                    EQU        23                    ; set if file system supports HFS calls 
  244. hfsCIDoesHFSMask                EQU        $00800000
  245. hfsCIDoesAppleShareBit            EQU        22                    ; set if AppleShare calls supported 
  246. hfsCIDoesAppleShareMask            EQU        $00400000
  247. hfsCIDoesDeskTopBit                EQU        21                    ; set if Desktop Database calls supported 
  248. hfsCIDoesDeskTopMask            EQU        $00200000
  249. hfsCIDoesDynamicLoadBit            EQU        20                    ; set if dynamically loading code resource 
  250. hfsCIDoesDynamicLoadMask        EQU        $00100000            ;        supported 
  251. hfsCIResourceLoadedBit            EQU        19                    ; set if code resource already loaded 
  252. hfsCIResourceLoadedMask            EQU        $00080000
  253. hfsCIHasHLL2PProcBit            EQU        18                    ; set if FFS' log2PhyProc and Extendfile proc 
  254. hfsCIHasHLL2PProcMask            EQU        $00040000            ; is written in a high level language. (i.e., uses Pascal calling convention) 
  255.  
  256. ;
  257. ; *    Disk Initialization Component Interface constants
  258. ;
  259. ; * compInterfMask bits specific to Disk Initialization component
  260. diCIHasExtFormatParamsBit        EQU        18                    ; set if file system needs extended format 
  261. diCIHasExtFormatParamsMask        EQU        $00040000            ;        parameters 
  262. diCIHasMultiVolTypesBit            EQU        17                    ; set if file system supports more than one 
  263. diCIHasMultiVolTypesMask        EQU        $00020000            ;        volume type 
  264. diCIDoesSparingBit                EQU        16                    ; set if file system supports disk sparing 
  265. diCIDoesSparingMask                EQU        $00010000
  266. diCILiveBit                        EQU        0                    ; set if file system is candidate for current 
  267. diCILiveMask                    EQU        $00000001            ;        formatting operation (set by PACK2) 
  268.  
  269. ;
  270. ; * Disk Initialization Component Function selectors
  271. diCILoad                        EQU        1                    ; Make initialization code memory resident 
  272. diCIUnload                        EQU        2                    ; Make initialization code purgeable 
  273. diCIEvaluateSizeChoices            EQU        3                    ; Evaluate size choices 
  274. diCIExtendedZero                EQU        4                    ; Write an empty volume directory 
  275. diCIValidateVolName                EQU        5                    ; Validate volume name 
  276. diCIGetVolTypeInfo                EQU        6                    ; get volume type info 
  277. diCIGetFormatString                EQU        7                    ; get dialog format string 
  278. diCIGetExtFormatParams            EQU        8                    ; get extended format parameters 
  279. diCIGetDefectList                EQU        9                    ; return the defect list for the indicated disk - reserved for future use 
  280.  
  281. ;
  282. ; * Constants used in the DICIEvaluateSizeRec and FormatListRec
  283. diCIFmtListMax                    EQU        8                    ; maximum number of format list entries in DICIEvaluateSizeRec.numSizeEntries 
  284. ;    bits in FormatListRec.formatFlags: 
  285. diCIFmtFlagsValidBit            EQU        7                    ; set if sec, side, tracks valid 
  286. diCIFmtFlagsValidMask            EQU        $80
  287. diCIFmtFlagsCurrentBit            EQU        6                    ; set if current disk has this fmt 
  288. diCIFmtFlagsCurrentMask            EQU        $40
  289. ;    bits in FormatListRec.sizeListFlags: 
  290. diCISizeListOKBit                EQU        15                    ; set if this disk size usable 
  291. diCISizeListOKMask                EQU        $8000
  292.  
  293. ;
  294. ; * DICIGetFormatStringRec.stringKind format strings
  295. diCIAlternateFormatStr            EQU        1                    ; get alternate format  string (Balloon Help) 
  296. diCISizePresentationStr            EQU        2                    ; get size presentation string (for dialog) 
  297.  
  298. ;
  299. ; * Error codes returned by Disk Sparing
  300. diCIUserCancelErr                EQU        1                    ; user cancelled the disk init 
  301. diCICriticalSectorBadErr        EQU        20                    ; critical sectors are bad (hopeless)    
  302. diCISparingFailedErr            EQU        21                    ; disk cannot be spared 
  303. diCITooManyBadSectorsErr        EQU        22                    ; too many bad sectors 
  304. diCIUnknownVolTypeErr            EQU        23                    ; the volume type passed in diCIExtendedZero paramBlock is not supported 
  305. diCIVolSizeMismatchErr            EQU        24                    ; specified volume size doesn’t match with formatted disk size 
  306. diCIUnknownDICallErr            EQU        25                    ; bogus DI function call selector 
  307. diCINoSparingErr                EQU        26                    ; disk is bad but the target FS doesn't do disk sparing 
  308. diCINoExtendInfoErr                EQU        27                    ; missing file system specific extra parameter in diCIExtendedZero call 
  309. diCINoMessageTextErr            EQU        28                    ; missing message text in DIReformat call 
  310.  
  311. ;
  312. ; *    File System Manager constants
  313. ;
  314. ; * Miscellaneous constants used by FSM
  315. fsdVersion1                        EQU        1                    ; current version of FSD record 
  316. fsmIgnoreFSID                    EQU        $fffe                ; this FSID should be ignored by the driver 
  317. fsmGenericFSID                    EQU        $ffff                ; unknown foreign file system ID 
  318.  
  319. ;
  320. ; * compInterfMask bits common to all FSM components
  321. fsmComponentEnableBit            EQU        31                    ; set if FSM component interface is enabled 
  322. fsmComponentEnableMask            EQU        $80000000
  323. fsmComponentBusyBit                EQU        30                    ; set if FSM component interface is busy 
  324. fsmComponentBusyMask            EQU        $40000000
  325.  
  326. ;
  327. ; * Selectors for GetFSInfo
  328. fsmGetFSInfoByIndex                EQU        -1                    ; get fs info by index 
  329. fsmGetFSInfoByFSID                EQU        0                    ; get fs info by FSID 
  330. fsmGetFSInfoByRefNum            EQU        1                    ; get fs info by file/vol refnum 
  331.  
  332. ;
  333. ; * InformFSM messages
  334. fsmNopMessage                    EQU        0                    ; nop 
  335. fsmDrvQElChangedMessage            EQU        1                    ; DQE has changed 
  336. fsmGetFSIconMessage                EQU        2                    ; Get FFS's disk icon 
  337.  
  338. ;
  339. ; * Messages passed to the fileSystemCommProc
  340. ffsNopMessage                    EQU        0                    ; nop, should always return noErr 
  341. ffsGetIconMessage                EQU        1                    ; return disk icon and mask 
  342. ffsIDDiskMessage                EQU        2                    ; identify the about-to-be-mounted volume 
  343. ffsLoadMessage                    EQU        3                    ; load in the FFS 
  344. ffsUnloadMessage                EQU        4                    ; unload the FFS 
  345. ffsIDVolMountMessage            EQU        5                    ; identify a VolMountInfo record 
  346. ffsInformMessage                EQU        6                    ; FFS defined message 
  347. ffsGetIconInfoMessage            EQU        7
  348.  
  349. ;
  350. ; * Error codes from FSM functions
  351. fsmFFSNotFoundErr                EQU        -431                ; Foreign File system does not exist - new Pack2 could return this error too 
  352. fsmBusyFFSErr                    EQU        -432                ; File system is busy, cannot be removed 
  353. fsmBadFFSNameErr                EQU        -433                ; Name length not 1 <= length <= 31 
  354. fsmBadFSDLenErr                    EQU        -434                ; FSD size incompatible with current FSM vers 
  355. fsmDuplicateFSIDErr                EQU        -435                ; FSID already exists on InstallFS 
  356. fsmBadFSDVersionErr                EQU        -436                ; FSM version incompatible with FSD 
  357. fsmNoAlternateStackErr            EQU        -437                ; no alternate stack for HFS CI 
  358. fsmUnknownFSMMessageErr            EQU        -438                ; unknown message passed to FSM 
  359.  
  360. ;
  361. ; *    HFS Utility routine records
  362. ;
  363. ; * record used by UTGetPathComponentName
  364. ParsePathRec             RECORD    0
  365. namePtr                     ds.l   1        ; offset: $0 (0)        ; pathname to parse 
  366. startOffset                 ds.w   1        ; offset: $4 (4)        ; where to start parsing 
  367. componentLength             ds.w   1        ; offset: $6 (6)        ; the length of the pathname component parsed 
  368. moreName                 ds.b   1        ; offset: $8 (8)        ; non-zero if there are more components after this one 
  369. foundDelimiter             ds.b   1        ; offset: $9 (9)        ; non-zero if parsing stopped because a colon (:) delimiter was found 
  370. sizeof                     EQU *            ; size:   $A (10)
  371.                         ENDR
  372.  
  373. ; typedef struct ParsePathRec  ParsePathRec
  374. ; typedef ParsePathRec         *ParsePathRecPtr
  375. WDCBRec                 RECORD    0
  376. wdVCBPtr                 ds.l   1        ; offset: $0 (0)        ; Pointer to VCB of this working directory 
  377. wdDirID                     ds.l   1        ; offset: $4 (4)        ; Directory ID number of this working directory 
  378. wdCatHint                 ds.l   1        ; offset: $8 (8)        ; Hint for finding this working directory 
  379. wdProcID                 ds.l   1        ; offset: $C (12)        ; Process that created this working directory 
  380. sizeof                     EQU *            ; size:   $10 (16)
  381.                         ENDR
  382.  
  383. ; typedef struct WDCBRec     WDCBRec
  384. ; typedef WDCBRec             *WDCBRecPtr
  385. FCBRec                     RECORD    0
  386. fcbFlNm                     ds.l   1        ; offset: $0 (0)        ; FCB file number. Non-zero marks FCB used 
  387. fcbFlags                 ds.b   1        ; offset: $4 (4)        ; FCB flags 
  388. fcbTypByt                 ds.b   1        ; offset: $5 (5)        ; File type byte 
  389. fcbSBlk                     ds.w   1        ; offset: $6 (6)        ; File start block (in alloc size blks) 
  390. fcbEOF                     ds.l   1        ; offset: $8 (8)        ; Logical length or EOF in bytes 
  391. fcbPLen                     ds.l   1        ; offset: $C (12)        ; Physical file length in bytes 
  392. fcbCrPs                     ds.l   1        ; offset: $10 (16)        ; Current position within file 
  393. fcbVPtr                     ds.l   1        ; offset: $14 (20)        ; Pointer to the corresponding VCB 
  394. fcbBfAdr                 ds.l   1        ; offset: $18 (24)        ; File's buffer address 
  395. fcbFlPos                 ds.w   1        ; offset: $1C (28)        ; Directory block this file is in 
  396. ; FCB Extensions for HFS 
  397. fcbClmpSize                 ds.l   1        ; offset: $1E (30)        ; Number of bytes per clump 
  398. fcbBTCBPtr                 ds.l   1        ; offset: $22 (34)        ; Pointer to B*-Tree control block for file 
  399. fcbExtRec                 ds.l   3        ; offset: $26 (38)        ; First 3 file extents 
  400. fcbFType                 ds.l   1        ; offset: $32 (50)        ; File's 4 Finder Type bytes 
  401. fcbCatPos                 ds.l   1        ; offset: $36 (54)        ; Catalog hint for use on Close 
  402. fcbDirID                 ds.l   1        ; offset: $3A (58)        ; Parent Directory ID 
  403. fcbCName                 ds.l   8        ; offset: $3E (62)        ; CName of open file 
  404. sizeof                     EQU *            ; size:   $5E (94)
  405.                         ENDR
  406.  
  407. ; typedef struct FCBRec     FCBRec
  408. ; typedef FCBRec             *FCBRecPtr
  409. ;
  410. ; *    HFS Component Interface records
  411. HFSCIRec                 RECORD    0
  412. compInterfMask             ds.l   1        ; offset: $0 (0)        ; component flags 
  413. compInterfProc             ds.l   1        ; offset: $4 (4)        ; pointer to file system call processing code 
  414. log2PhyProc                 ds.l   1        ; offset: $8 (8)        ; pointer to Lg2PhysProc() code 
  415. stackTop                 ds.l   1        ; offset: $C (12)        ; file system stack top 
  416. stackSize                 ds.l   1        ; offset: $10 (16)        ; file system stack size 
  417. stackPtr                 ds.l   1        ; offset: $14 (20)        ; current file system stack pointer 
  418. reserved3                 ds.l   1        ; offset: $18 (24)        ; --reserved, must be zero-- 
  419. idSector                 ds.l   1        ; offset: $1C (28)        ; Sector you need to ID a local volume. For networked volumes, this must be -1 
  420. reserved2                 ds.l   1        ; offset: $20 (32)        ; --reserved, must be zero-- 
  421. reserved1                 ds.l   1        ; offset: $24 (36)        ; --reserved, must be zero-- 
  422. sizeof                     EQU *            ; size:   $28 (40)
  423.                         ENDR
  424.  
  425. ; typedef struct HFSCIRec     HFSCIRec
  426. ; typedef HFSCIRec             *HFSCIRecPtr
  427. ;
  428. ; *    Disk Initialization Component Interface records
  429. DICIRec                 RECORD    0
  430. compInterfMask             ds.l   1        ; offset: $0 (0)        ; component flags 
  431. compInterfProc             ds.l   1        ; offset: $4 (4)        ; pointer to call processing code 
  432. maxVolNameLength         ds.w   1        ; offset: $8 (8)        ; maximum length of your volume name 
  433. blockSize                 ds.w   1        ; offset: $A (10)        ; your file system's block size 
  434. reserved3                 ds.l   1        ; offset: $C (12)        ; --reserved, must be zero-- 
  435. reserved2                 ds.l   1        ; offset: $10 (16)        ; --reserved, must be zero-- 
  436. reserved1                 ds.l   1        ; offset: $14 (20)        ; --reserved, must be zero-- 
  437. sizeof                     EQU *            ; size:   $18 (24)
  438.                         ENDR
  439.  
  440. ; typedef struct DICIRec     DICIRec
  441. ; typedef DICIRec             *DICIRecPtr
  442. ;
  443. ; * FormatListRec as returned by the .Sony disk driver's
  444. ; * Return Format List status call (csCode = 6).
  445. ; * If the status call to get this list for a drive is not
  446. ; * implemented by the driver, then a list with one entry
  447. ; * is contructed from the drive queue element for the drive.
  448. FormatListRec             RECORD    0
  449. volSize                     ds.l   1        ; offset: $0 (0)        ; disk capacity in SECTORs 
  450. formatFlags                 ds.b   1        ; offset: $4 (4)        ; flags 
  451. sectorsPerTrack             ds.b   1        ; offset: $5 (5)        ; sectors per track side 
  452. tracks                     ds.w   1        ; offset: $6 (6)        ; number of tracks 
  453. sizeof                     EQU *            ; size:   $8 (8)
  454.                         ENDR
  455.  
  456. ; typedef struct FormatListRec  FormatListRec
  457. ; typedef FormatListRec     *FormatListRecPtr
  458. ;
  459. ; * SizeListRec built from FormatListRecs as described above.
  460. SizeListRec             RECORD    0
  461. sizeListFlags             ds.w   1        ; offset: $0 (0)        ; flags as set by external file system 
  462. sizeEntry                 ds     FormatListRec ; offset: $2 (2)    ; disk driver format list record 
  463. sizeof                     EQU *            ; size:   $A (10)
  464.                         ENDR
  465.  
  466. ; typedef struct SizeListRec  SizeListRec
  467. ; typedef SizeListRec         *SizeListRecPtr
  468. ;
  469. ; * paramBlock for the diCIEvaluateSize call
  470. DICIEvaluateSizeRec     RECORD    0
  471. defaultSizeIndex         ds.w   1        ; offset: $0 (0)        ; default size for this FS 
  472. numSizeEntries             ds.w   1        ; offset: $2 (2)        ; number of size entries 
  473. driveNumber                 ds.w   1        ; offset: $4 (4)        ; drive number 
  474. sizeListPtr                 ds.l   1        ; offset: $6 (6)        ; ptr to size entry table 
  475. sectorSize                 ds.w   1        ; offset: $A (10)        ; bytes per sector 
  476. sizeof                     EQU *            ; size:   $C (12)
  477.                         ENDR
  478.  
  479. ; typedef struct DICIEvaluateSizeRec  DICIEvaluateSizeRec
  480. ; typedef DICIEvaluateSizeRec  *DICIEvaluateSizeRecPtr
  481. ;
  482. ; * paramBlock for the diCIExtendedZero call
  483. DICIExtendedZeroRec     RECORD    0
  484. driveNumber                 ds.w   1        ; offset: $0 (0)        ; drive number 
  485. volNamePtr                 ds.l   1        ; offset: $2 (2)        ; ptr to volume name string 
  486. fsid                     ds.w   1        ; offset: $6 (6)        ; file system ID 
  487. volTypeSelector             ds.w   1        ; offset: $8 (8)        ; volume type selector, if supports more than 1 type 
  488. numDefectBlocks             ds.w   1        ; offset: $A (10)        ; number of bad logical blocks 
  489. defectListSize             ds.w   1        ; offset: $C (12)        ; size of the defect list buffer in bytes 
  490. defectListPtr             ds.l   1        ; offset: $E (14)        ; pointer to defect list buffer 
  491. volSize                     ds.l   1        ; offset: $12 (18)        ; size of volume in SECTORs 
  492. sectorSize                 ds.w   1        ; offset: $16 (22)        ; bytes per sector 
  493. extendedInfoPtr             ds.l   1        ; offset: $18 (24)        ; ptr to extended info 
  494. sizeof                     EQU *            ; size:   $1C (28)
  495.                         ENDR
  496.  
  497. ; typedef struct DICIExtendedZeroRec  DICIExtendedZeroRec
  498. ; typedef DICIExtendedZeroRec  *DICIExtendedZeroRecPtr
  499. ;
  500. ; * paramBlock for the diCIValidateVolName call
  501. DICIValidateVolNameRec     RECORD    0
  502. theChar                     ds.b   1        ; offset: $0 (0)        ; the character to validate 
  503. hasMessageBuffer         ds.b   1        ; offset: $1 (1)        ; false if no message 
  504. charOffset                 ds.w   1        ; offset: $2 (2)        ; position of the current character (first char = 1) 
  505. messageBufferPtr         ds.l   1        ; offset: $4 (4)        ; pointer to message buffer or nil 
  506. charByteType             ds.w   1        ; offset: $8 (8)        ; theChar's byte type (smSingleByte, smFirstByte, or smLastByte) 
  507. sizeof                     EQU *            ; size:   $A (10)
  508.                         ENDR
  509.  
  510. ; typedef struct DICIValidateVolNameRec  DICIValidateVolNameRec
  511. ; typedef DICIValidateVolNameRec  *DICIValidateVolNameRecPtr
  512. ;
  513. ; * paramBlock for the diCIGetVolTypeInfo call
  514. DICIGetVolTypeInfoRec     RECORD    0
  515. volSize                     ds.l   1        ; offset: $0 (0)        ; size of volume in SECTORs 
  516. sectorSize                 ds.w   1        ; offset: $4 (4)        ; bytes per sector 
  517. numVolTypes                 ds.w   1        ; offset: $6 (6)        ; number of volume types supported 
  518. volTypesBuffer             ds.l   32        ; offset: $8 (8)        ; 4 string buffers 
  519. sizeof                     EQU *            ; size:   $88 (136)
  520.                         ENDR
  521.  
  522. ; typedef struct DICIGetVolTypeInfoRec  DICIGetVolTypeInfoRec
  523. ; typedef DICIGetVolTypeInfoRec  *DICIGetVolTypeInfoRecPtr
  524. ;
  525. ; * paramBlock for the diCIGetFormatString call
  526. DICIGetFormatStringRec     RECORD    0
  527. volSize                     ds.l   1        ; offset: $0 (0)        ; volume size in SECTORs 
  528. sectorSize                 ds.w   1        ; offset: $4 (4)        ; sector size 
  529. volTypeSelector             ds.w   1        ; offset: $6 (6)        ; volume type selector 
  530. stringKind                 ds.w   1        ; offset: $8 (8)        ; sub-function = type of string 
  531. stringBuffer             ds.l   64        ; offset: $A (10)        ; string buffer 
  532. sizeof                     EQU *            ; size:   $10A (266)
  533.                         ENDR
  534.  
  535. ; typedef struct DICIGetFormatStringRec  DICIGetFormatStringRec
  536. ; typedef DICIGetFormatStringRec  *DICIGetFormatStringRecPtr
  537. ;
  538. ; * paramBlock for the diCIGetExtendedFormatParams call
  539. DICIGetExtendedFormatRec RECORD    0
  540. driveNumber                 ds.w   1        ; offset: $0 (0)        ; drive number 
  541. volTypeSelector             ds.w   1        ; offset: $2 (2)        ; volume type selector or 0 
  542. volSize                     ds.l   1        ; offset: $4 (4)        ; size of volume in SECTORs 
  543. sectorSize                 ds.w   1        ; offset: $8 (8)        ; bytes per sector 
  544. fileSystemSpecPtr         ds.l   1        ; offset: $A (10)        ; pointer to the foreign file system's FSSpec 
  545. extendedInfoPtr             ds.l   1        ; offset: $E (14)        ; pointer to extended parameter structure 
  546. sizeof                     EQU *            ; size:   $12 (18)
  547.                         ENDR
  548.  
  549. ; typedef struct DICIGetExtendedFormatRec  DICIGetExtendedFormatRec
  550. ; typedef DICIGetExtendedFormatRec  *DICIGetExtendedFormatRecPtr
  551. ;
  552. ; *    File System Manager records
  553. FSDRec                     RECORD    0
  554. fsdLink                     ds.l   1        ; offset: $0 (0)        ; ptr to next 
  555. fsdLength                 ds.w   1        ; offset: $4 (4)        ; length of this FSD in BYTES 
  556. fsdVersion                 ds.w   1        ; offset: $6 (6)        ; version number 
  557. fileSystemFSID             ds.w   1        ; offset: $8 (8)        ; file system id 
  558. fileSystemName             ds.l   8        ; offset: $A (10)        ; file system name 
  559. fileSystemSpec             ds     FSSpec    ; offset: $2A (42)        ; foreign file system's FSSpec 
  560. fileSystemGlobalsPtr     ds.l   1        ; offset: $70 (112)        ; ptr to file system globals 
  561. fileSystemCommProc         ds.l   1        ; offset: $74 (116)        ; communication proc with the FFS 
  562. reserved3                 ds.l   1        ; offset: $78 (120)        ; --reserved, must be zero-- 
  563. reserved2                 ds.l   1        ; offset: $7C (124)        ; --reserved, must be zero-- 
  564. reserved1                 ds.l   1        ; offset: $80 (128)        ; --reserved, must be zero-- 
  565. fsdHFSCI                 ds     HFSCIRec ; offset: $84 (132)    ; HFS component interface    
  566. fsdDICI                     ds     DICIRec    ; offset: $AC (172)        ; Disk Initialization component interface 
  567. sizeof                     EQU *            ; size:   $C4 (196)
  568.                         ENDR
  569.  
  570. ; typedef struct FSDRec     FSDRec
  571. ; typedef FSDRec             *FSDRecPtr
  572. FSMGetIconInfoRec         RECORD    0
  573. theIcon                     ds.l   32        ; offset: $0 (0)        ; The ICN# structure 
  574. theMask                     ds.l   32        ; offset: $80 (128)        ; The mask for the icon above 
  575. whereStr                 ds.l   64        ; offset: $100 (256)
  576. sizeof                     EQU *            ; size:   $200 (512)
  577.                         ENDR
  578.  
  579. ; typedef struct FSMGetIconInfoRec  FSMGetIconInfoRec
  580. ; typedef FSMGetIconInfoRec  *FSMGetIconInfoRecPtr
  581. ;
  582. ; * paramBlock for ffsGetIconMessage and fsmGetFSIconMessage
  583. FSMGetIconRec             RECORD    0
  584. refNum                     ds.w   1        ; offset: $0 (0)        ; target drive num or volume refnum 
  585. iconBufferPtr             ds.l   1        ; offset: $2 (2)        ; pointer to icon buffer 
  586. requestSize                 ds.l   1        ; offset: $6 (6)        ; requested size of the icon buffer 
  587. actualSize                 ds.l   1        ; offset: $A (10)        ; actual size of the icon data returned 
  588. iconType                 ds.b   1        ; offset: $E (14)        ; kind of icon 
  589. isEjectable                 ds.b   1        ; offset: $F (15)        ; true if the device is ejectable 
  590. driveQElemPtr             ds.l   1        ; offset: $10 (16)        ; pointer to DQE 
  591. fileSystemSpecPtr         ds.l   1        ; offset: $14 (20)        ; pointer to foreign file system's FSSpec 
  592. reserved1                 ds.l   1        ; offset: $18 (24)        ; --reserved, must be zero-- 
  593. sizeof                     EQU *            ; size:   $1C (28)
  594.                         ENDR
  595.  
  596. ; typedef struct FSMGetIconRec  FSMGetIconRec
  597. ; typedef FSMGetIconRec     *FSMGetIconRecPtr
  598. ;
  599. ; *    HFS Utility routine prototypes
  600. ;
  601. ; pascal OSErr UTAllocateFCB(short *fileRefNum, FCBRecPtr *fileCtrlBlockPtr)
  602. ;
  603.     IF ¬ GENERATINGCFM THEN
  604.         Macro
  605.         _UTAllocateFCB
  606.             moveq    #0,d0
  607.             dc.w     $A824
  608.         EndM
  609.     ELSE
  610.         IMPORT_CFM_FUNCTION    UTAllocateFCB
  611.     ENDIF
  612.  
  613. ;
  614. ; pascal OSErr UTReleaseFCB(short fileRefNum)
  615. ;
  616.     IF ¬ GENERATINGCFM THEN
  617.         Macro
  618.         _UTReleaseFCB
  619.             moveq    #1,d0
  620.             dc.w     $A824
  621.         EndM
  622.     ELSE
  623.         IMPORT_CFM_FUNCTION    UTReleaseFCB
  624.     ENDIF
  625.  
  626. ;
  627. ; pascal OSErr UTLocateFCB(VCBPtr volCtrlBlockPtr, unsigned long fileNum, StringPtr namePtr, short *fileRefNum, FCBRecPtr *fileCtrlBlockPtr)
  628. ;
  629.     IF ¬ GENERATINGCFM THEN
  630.         Macro
  631.         _UTLocateFCB
  632.             moveq    #2,d0
  633.             dc.w     $A824
  634.         EndM
  635.     ELSE
  636.         IMPORT_CFM_FUNCTION    UTLocateFCB
  637.     ENDIF
  638.  
  639. ;
  640. ; pascal OSErr UTLocateNextFCB(VCBPtr volCtrlBlockPtr, unsigned long fileNum, StringPtr namePtr, short *fileRefNum, FCBRecPtr *fileCtrlBlockPtr)
  641. ;
  642.     IF ¬ GENERATINGCFM THEN
  643.         Macro
  644.         _UTLocateNextFCB
  645.             moveq    #3,d0
  646.             dc.w     $A824
  647.         EndM
  648.     ELSE
  649.         IMPORT_CFM_FUNCTION    UTLocateNextFCB
  650.     ENDIF
  651.  
  652. ;
  653. ; pascal OSErr UTIndexFCB(VCBPtr volCtrlBlockPtr, short *fileRefNum, FCBRecPtr *fileCtrlBlockPtr)
  654. ;
  655.     IF ¬ GENERATINGCFM THEN
  656.         Macro
  657.         _UTIndexFCB
  658.             moveq    #4,d0
  659.             dc.w     $A824
  660.         EndM
  661.     ELSE
  662.         IMPORT_CFM_FUNCTION    UTIndexFCB
  663.     ENDIF
  664.  
  665. ;
  666. ; pascal OSErr UTResolveFCB(short fileRefNum, FCBRecPtr *fileCtrlBlockPtr)
  667. ;
  668.     IF ¬ GENERATINGCFM THEN
  669.         Macro
  670.         _UTResolveFCB
  671.             moveq    #5,d0
  672.             dc.w     $A824
  673.         EndM
  674.     ELSE
  675.         IMPORT_CFM_FUNCTION    UTResolveFCB
  676.     ENDIF
  677.  
  678. ;
  679. ; pascal OSErr UTAllocateVCB(unsigned short *sysVCBLength, VCBPtr *volCtrlBlockPtr, unsigned short addSize)
  680. ;
  681.     IF ¬ GENERATINGCFM THEN
  682.         Macro
  683.         _UTAllocateVCB
  684.             moveq    #6,d0
  685.             dc.w     $A824
  686.         EndM
  687.     ELSE
  688.         IMPORT_CFM_FUNCTION    UTAllocateVCB
  689.     ENDIF
  690.  
  691. ;
  692. ; pascal OSErr UTAddNewVCB(short driveNum, short *vRefNum, VCBPtr volCtrlBlockPtr)
  693. ;
  694.     IF ¬ GENERATINGCFM THEN
  695.         Macro
  696.         _UTAddNewVCB
  697.             moveq    #7,d0
  698.             dc.w     $A824
  699.         EndM
  700.     ELSE
  701.         IMPORT_CFM_FUNCTION    UTAddNewVCB
  702.     ENDIF
  703.  
  704. ;
  705. ; pascal OSErr UTDisposeVCB(VCBPtr volCtrlBlockPtr)
  706. ;
  707.     IF ¬ GENERATINGCFM THEN
  708.         Macro
  709.         _UTDisposeVCB
  710.             moveq    #8,d0
  711.             dc.w     $A824
  712.         EndM
  713.     ELSE
  714.         IMPORT_CFM_FUNCTION    UTDisposeVCB
  715.     ENDIF
  716.  
  717. ;
  718. ; pascal OSErr UTLocateVCBByRefNum(short refNum, short *vRefNum, VCBPtr *volCtrlBlockPtr)
  719. ;
  720.     IF ¬ GENERATINGCFM THEN
  721.         Macro
  722.         _UTLocateVCBByRefNum
  723.             moveq    #9,d0
  724.             dc.w     $A824
  725.         EndM
  726.     ELSE
  727.         IMPORT_CFM_FUNCTION    UTLocateVCBByRefNum
  728.     ENDIF
  729.  
  730. ;
  731. ; pascal OSErr UTLocateVCBByName(StringPtr namePtr, short *moreMatches, short *vRefNum, VCBPtr *volCtrlBlockPtr)
  732. ;
  733.     IF ¬ GENERATINGCFM THEN
  734.         Macro
  735.         _UTLocateVCBByName
  736.             moveq    #10,d0
  737.             dc.w     $A824
  738.         EndM
  739.     ELSE
  740.         IMPORT_CFM_FUNCTION    UTLocateVCBByName
  741.     ENDIF
  742.  
  743. ;
  744. ; pascal OSErr UTLocateNextVCB(StringPtr namePtr, short *moreMatches, short *vRefNum, VCBPtr *volCtrlBlockPtr)
  745. ;
  746.     IF ¬ GENERATINGCFM THEN
  747.         Macro
  748.         _UTLocateNextVCB
  749.             moveq    #11,d0
  750.             dc.w     $A824
  751.         EndM
  752.     ELSE
  753.         IMPORT_CFM_FUNCTION    UTLocateNextVCB
  754.     ENDIF
  755.  
  756. ;
  757. ; pascal OSErr UTAllocateWDCB(WDPBPtr paramBlock)
  758. ;
  759.     IF ¬ GENERATINGCFM THEN
  760.         Macro
  761.         _UTAllocateWDCB
  762.             moveq    #12,d0
  763.             dc.w     $A824
  764.         EndM
  765.     ELSE
  766.         IMPORT_CFM_FUNCTION    UTAllocateWDCB
  767.     ENDIF
  768.  
  769. ;
  770. ; pascal OSErr UTReleaseWDCB(short wdRefNum)
  771. ;
  772.     IF ¬ GENERATINGCFM THEN
  773.         Macro
  774.         _UTReleaseWDCB
  775.             moveq    #13,d0
  776.             dc.w     $A824
  777.         EndM
  778.     ELSE
  779.         IMPORT_CFM_FUNCTION    UTReleaseWDCB
  780.     ENDIF
  781.  
  782. ;
  783. ; pascal OSErr UTResolveWDCB(long procID, short wdIndex, short wdRefNum, WDCBRecPtr *wdCtrlBlockPtr)
  784. ;
  785.     IF ¬ GENERATINGCFM THEN
  786.         Macro
  787.         _UTResolveWDCB
  788.             moveq    #14,d0
  789.             dc.w     $A824
  790.         EndM
  791.     ELSE
  792.         IMPORT_CFM_FUNCTION    UTResolveWDCB
  793.     ENDIF
  794.  
  795. ;
  796. ; pascal OSErr UTFindDrive(short driveNum, DrvQElPtr *driveQElementPtr)
  797. ;
  798.     IF ¬ GENERATINGCFM THEN
  799.         Macro
  800.         _UTFindDrive
  801.             moveq    #15,d0
  802.             dc.w     $A824
  803.         EndM
  804.     ELSE
  805.         IMPORT_CFM_FUNCTION    UTFindDrive
  806.     ENDIF
  807.  
  808. ;
  809. ; pascal OSErr UTAdjustEOF(short fileRefNum)
  810. ;
  811.     IF ¬ GENERATINGCFM THEN
  812.         Macro
  813.         _UTAdjustEOF
  814.             moveq    #16,d0
  815.             dc.w     $A824
  816.         EndM
  817.     ELSE
  818.         IMPORT_CFM_FUNCTION    UTAdjustEOF
  819.     ENDIF
  820.  
  821. ;
  822. ; pascal OSErr UTSetDefaultVol(long nodeHint, unsigned long dirID, short refNum)
  823. ;
  824.     IF ¬ GENERATINGCFM THEN
  825.         Macro
  826.         _UTSetDefaultVol
  827.             moveq    #17,d0
  828.             dc.w     $A824
  829.         EndM
  830.     ELSE
  831.         IMPORT_CFM_FUNCTION    UTSetDefaultVol
  832.     ENDIF
  833.  
  834. ;
  835. ; pascal OSErr UTGetDefaultVol(WDPBPtr paramBlock)
  836. ;
  837.     IF ¬ GENERATINGCFM THEN
  838.         Macro
  839.         _UTGetDefaultVol
  840.             moveq    #18,d0
  841.             dc.w     $A824
  842.         EndM
  843.     ELSE
  844.         IMPORT_CFM_FUNCTION    UTGetDefaultVol
  845.     ENDIF
  846.  
  847. ;
  848. ; pascal OSErr UTEjectVol(VCBPtr volCtrlBlockPtr)
  849. ;
  850.     IF ¬ GENERATINGCFM THEN
  851.         Macro
  852.         _UTEjectVol
  853.             moveq    #43,d0
  854.             dc.w     $A824
  855.         EndM
  856.     ELSE
  857.         IMPORT_CFM_FUNCTION    UTEjectVol
  858.     ENDIF
  859.  
  860. ;
  861. ; pascal OSErr UTCheckWDRefNum(short wdRefNum)
  862. ;
  863.     IF ¬ GENERATINGCFM THEN
  864.         Macro
  865.         _UTCheckWDRefNum
  866.             moveq    #19,d0
  867.             dc.w     $A824
  868.         EndM
  869.     ELSE
  870.         IMPORT_CFM_FUNCTION    UTCheckWDRefNum
  871.     ENDIF
  872.  
  873. ;
  874. ; pascal OSErr UTCheckFileRefNum(short fileRefNum)
  875. ;
  876.     IF ¬ GENERATINGCFM THEN
  877.         Macro
  878.         _UTCheckFileRefNum
  879.             moveq    #20,d0
  880.             dc.w     $A824
  881.         EndM
  882.     ELSE
  883.         IMPORT_CFM_FUNCTION    UTCheckFileRefNum
  884.     ENDIF
  885.  
  886. ;
  887. ; pascal OSErr UTCheckVolRefNum(short vRefNum)
  888. ;
  889.     IF ¬ GENERATINGCFM THEN
  890.         Macro
  891.         _UTCheckVolRefNum
  892.             moveq    #21,d0
  893.             dc.w     $A824
  894.         EndM
  895.     ELSE
  896.         IMPORT_CFM_FUNCTION    UTCheckVolRefNum
  897.     ENDIF
  898.  
  899. ;
  900. ; pascal OSErr UTCheckPermission(VCBPtr volCtrlBlockPtr, short *modByte, unsigned long fileNum, ParmBlkPtr paramBlock)
  901. ;
  902.     IF ¬ GENERATINGCFM THEN
  903.         Macro
  904.         _UTCheckPermission
  905.             moveq    #22,d0
  906.             dc.w     $A824
  907.         EndM
  908.     ELSE
  909.         IMPORT_CFM_FUNCTION    UTCheckPermission
  910.     ENDIF
  911.  
  912. ;
  913. ; pascal OSErr UTCheckVolOffline(short vRefNum)
  914. ;
  915.     IF ¬ GENERATINGCFM THEN
  916.         Macro
  917.         _UTCheckVolOffline
  918.             moveq    #23,d0
  919.             dc.w     $A824
  920.         EndM
  921.     ELSE
  922.         IMPORT_CFM_FUNCTION    UTCheckVolOffline
  923.     ENDIF
  924.  
  925. ;
  926. ; pascal OSErr UTCheckVolModifiable(short vRefNum)
  927. ;
  928.     IF ¬ GENERATINGCFM THEN
  929.         Macro
  930.         _UTCheckVolModifiable
  931.             moveq    #24,d0
  932.             dc.w     $A824
  933.         EndM
  934.     ELSE
  935.         IMPORT_CFM_FUNCTION    UTCheckVolModifiable
  936.     ENDIF
  937.  
  938. ;
  939. ; pascal OSErr UTCheckFileModifiable(short fileRefNum)
  940. ;
  941.     IF ¬ GENERATINGCFM THEN
  942.         Macro
  943.         _UTCheckFileModifiable
  944.             moveq    #25,d0
  945.             dc.w     $A824
  946.         EndM
  947.     ELSE
  948.         IMPORT_CFM_FUNCTION    UTCheckFileModifiable
  949.     ENDIF
  950.  
  951. ;
  952. ; pascal OSErr UTCheckDirBusy(VCBPtr volCtrlBlockPtr, unsigned long dirID)
  953. ;
  954.     IF ¬ GENERATINGCFM THEN
  955.         Macro
  956.         _UTCheckDirBusy
  957.             moveq    #26,d0
  958.             dc.w     $A824
  959.         EndM
  960.     ELSE
  961.         IMPORT_CFM_FUNCTION    UTCheckDirBusy
  962.     ENDIF
  963.  
  964. ;
  965. ; pascal OSErr UTParsePathname(short *volNamelength, StringPtr namePtr)
  966. ;
  967.     IF ¬ GENERATINGCFM THEN
  968.         Macro
  969.         _UTParsePathname
  970.             moveq    #27,d0
  971.             dc.w     $A824
  972.         EndM
  973.     ELSE
  974.         IMPORT_CFM_FUNCTION    UTParsePathname
  975.     ENDIF
  976.  
  977. ;
  978. ; pascal OSErr UTGetPathComponentName(ParsePathRecPtr parseRec)
  979. ;
  980.     IF ¬ GENERATINGCFM THEN
  981.         Macro
  982.         _UTGetPathComponentName
  983.             moveq    #28,d0
  984.             dc.w     $A824
  985.         EndM
  986.     ELSE
  987.         IMPORT_CFM_FUNCTION    UTGetPathComponentName
  988.     ENDIF
  989.  
  990. ;
  991. ; pascal OSErr UTDetermineVol(ParmBlkPtr paramBlock, short *status, short *moreMatches, short *vRefNum, VCBPtr *volCtrlBlockPtr)
  992. ;
  993.     IF ¬ GENERATINGCFM THEN
  994.         Macro
  995.         _UTDetermineVol
  996.             moveq    #29,d0
  997.             dc.w     $A824
  998.         EndM
  999.     ELSE
  1000.         IMPORT_CFM_FUNCTION    UTDetermineVol
  1001.     ENDIF
  1002.  
  1003. ;
  1004. ; pascal OSErr UTGetBlock(short refNum, void *log2PhyProc, unsigned long blockNum, short gbOption, Ptr *buffer)
  1005. ;
  1006.     IF ¬ GENERATINGCFM THEN
  1007.         Macro
  1008.         _UTGetBlock
  1009.             moveq    #31,d0
  1010.             dc.w     $A824
  1011.         EndM
  1012.     ELSE
  1013.         IMPORT_CFM_FUNCTION    UTGetBlock
  1014.     ENDIF
  1015.  
  1016. ;
  1017. ; pascal OSErr UTReleaseBlock(Ptr buffer, short rbOption)
  1018. ;
  1019.     IF ¬ GENERATINGCFM THEN
  1020.         Macro
  1021.         _UTReleaseBlock
  1022.             moveq    #32,d0
  1023.             dc.w     $A824
  1024.         EndM
  1025.     ELSE
  1026.         IMPORT_CFM_FUNCTION    UTReleaseBlock
  1027.     ENDIF
  1028.  
  1029. ;
  1030. ; pascal OSErr UTFlushCache(short refNum, short fcOption)
  1031. ;
  1032.     IF ¬ GENERATINGCFM THEN
  1033.         Macro
  1034.         _UTFlushCache
  1035.             moveq    #33,d0
  1036.             dc.w     $A824
  1037.         EndM
  1038.     ELSE
  1039.         IMPORT_CFM_FUNCTION    UTFlushCache
  1040.     ENDIF
  1041.  
  1042. ;
  1043. ; pascal OSErr UTMarkDirty(Ptr buffer)
  1044. ;
  1045.     IF ¬ GENERATINGCFM THEN
  1046.         Macro
  1047.         _UTMarkDirty
  1048.             moveq    #35,d0
  1049.             dc.w     $A824
  1050.         EndM
  1051.     ELSE
  1052.         IMPORT_CFM_FUNCTION    UTMarkDirty
  1053.     ENDIF
  1054.  
  1055. ;
  1056. ; pascal OSErr UTTrashVolBlocks(VCBPtr volCtrlBlockPtr)
  1057. ;
  1058.     IF ¬ GENERATINGCFM THEN
  1059.         Macro
  1060.         _UTTrashVolBlocks
  1061.             moveq    #36,d0
  1062.             dc.w     $A824
  1063.         EndM
  1064.     ELSE
  1065.         IMPORT_CFM_FUNCTION    UTTrashVolBlocks
  1066.     ENDIF
  1067.  
  1068. ;
  1069. ; pascal OSErr UTTrashFileBlocks(VCBPtr volCtrlBlockPtr, unsigned long fileNum)
  1070. ;
  1071.     IF ¬ GENERATINGCFM THEN
  1072.         Macro
  1073.         _UTTrashFileBlocks
  1074.             moveq    #37,d0
  1075.             dc.w     $A824
  1076.         EndM
  1077.     ELSE
  1078.         IMPORT_CFM_FUNCTION    UTTrashFileBlocks
  1079.     ENDIF
  1080.  
  1081. ;
  1082. ; pascal OSErr UTTrashBlocks(unsigned long beginPosition, unsigned long byteCount, VCBPtr volCtrlBlockPtr, short fileRefNum, short tbOption)
  1083. ;
  1084.     IF ¬ GENERATINGCFM THEN
  1085.         Macro
  1086.         _UTTrashBlocks
  1087.             moveq    #38,d0
  1088.             dc.w     $A824
  1089.         EndM
  1090.     ELSE
  1091.         IMPORT_CFM_FUNCTION    UTTrashBlocks
  1092.     ENDIF
  1093.  
  1094. ;
  1095. ; pascal OSErr UTCacheReadIP(void *log2PhyProc, unsigned long filePosition, Ptr ioBuffer, short fileRefNum, unsigned long reqCount, unsigned long *actCount, short cacheOption)
  1096. ;
  1097.     IF ¬ GENERATINGCFM THEN
  1098.         Macro
  1099.         _UTCacheReadIP
  1100.             moveq    #39,d0
  1101.             dc.w     $A824
  1102.         EndM
  1103.     ELSE
  1104.         IMPORT_CFM_FUNCTION    UTCacheReadIP
  1105.     ENDIF
  1106.  
  1107. ;
  1108. ; pascal OSErr UTCacheWriteIP(void *log2PhyProc, unsigned long filePosition, Ptr ioBuffer, short fileRefNum, unsigned long reqCount, unsigned long *actCount, short cacheOption)
  1109. ;
  1110.     IF ¬ GENERATINGCFM THEN
  1111.         Macro
  1112.         _UTCacheWriteIP
  1113.             moveq    #40,d0
  1114.             dc.w     $A824
  1115.         EndM
  1116.     ELSE
  1117.         IMPORT_CFM_FUNCTION    UTCacheWriteIP
  1118.     ENDIF
  1119.  
  1120. ;
  1121. ; pascal OSErr UTBlockInFQHashP(short vRefNum, unsigned long diskBlock)
  1122. ;
  1123.     IF ¬ GENERATINGCFM THEN
  1124.         Macro
  1125.         _UTBlockInFQHashP
  1126.             moveq    #44,d0
  1127.             dc.w     $A824
  1128.         EndM
  1129.     ELSE
  1130.         IMPORT_CFM_FUNCTION    UTBlockInFQHashP
  1131.     ENDIF
  1132.  
  1133. ;
  1134. ; *    File System Manager call prototypes
  1135. ;
  1136. ; pascal OSErr InstallFS(FSDRecPtr fsdPtr)
  1137. ;
  1138.     IF GENERATINGCFM THEN
  1139.         IMPORT_CFM_FUNCTION    InstallFS
  1140.     ENDIF
  1141.  
  1142. ;
  1143. ; pascal OSErr RemoveFS(short fsid)
  1144. ;
  1145.     IF GENERATINGCFM THEN
  1146.         IMPORT_CFM_FUNCTION    RemoveFS
  1147.     ENDIF
  1148.  
  1149. ;
  1150. ; pascal OSErr SetFSInfo(short fsid, short bufSize, FSDRecPtr fsdPtr)
  1151. ;
  1152.     IF GENERATINGCFM THEN
  1153.         IMPORT_CFM_FUNCTION    SetFSInfo
  1154.     ENDIF
  1155.  
  1156. ;
  1157. ; pascal OSErr GetFSInfo(short selector, short key, short *bufSize, FSDRecPtr fsdPtr)
  1158. ;
  1159.     IF GENERATINGCFM THEN
  1160.         IMPORT_CFM_FUNCTION    GetFSInfo
  1161.     ENDIF
  1162.  
  1163. ;
  1164. ; pascal OSErr InformFSM(short theMessage, void *paramBlock)
  1165. ;
  1166.     IF GENERATINGCFM THEN
  1167.         IMPORT_CFM_FUNCTION    InformFSM
  1168.     ENDIF
  1169.  
  1170. ;
  1171. ; pascal OSErr InformFFS(short fsid, void *paramBlock)
  1172. ;
  1173.     IF GENERATINGCFM THEN
  1174.         IMPORT_CFM_FUNCTION    InformFFS
  1175.     ENDIF
  1176.  
  1177.     ENDIF ; __FSM__
  1178.